/*
 * wk_hash.h
 *
 *  Created on: 2012-3-8
 *      Author: tianmax
 */

#ifndef __WK_HASH_H__
#define __WK_HASH_H__

#include "wk_hash_types.h"

/****************************************************/
extern WHash* wk_hash_init(wsize_t table_size,
		wk_hash_func hash_func,wk_element_comp comp);
extern void wk_hash_destroy(WHash* hash);
/****************************************************/
/*设置哈希函数*/
extern int wk_hash_setHashFunc(WHash* hash,wk_hash_func hash_func);
/*设置元素比较器*/
extern int wk_hash_setComp(WHash* hash,wk_element_comp comp);
/****************************************************/
/**
 * 清空哈希表中的所有内容，使其成为一个空哈希表
 */
extern int wk_hash_clean(WHash* hash);
/****************************************************/
extern WPElement wk_hash_value(WHash* hash,WPElement data
		/*wk_hash_func hash_func,wk_hash_comp comp*/);
/****************************************************/
extern int wk_hash_insert(WHash* hash,WPElement data
		/*wk_hash_func hash_func*/);
/****************************************************/
extern int wk_hash_remove(WHash* hash,WPElement data
		/*wk_hash_func hash_func,wk_hash_comp comp*/);
/****************************************************/
extern WPElement wk_hash_find(WHash* hash,WPElement data
		/*wk_hash_func hash_func,wk_hash_comp comp*/);
/****************************************************/
/**
 * 统计当前哈希表中存储数据的数量
 */
extern wlong_t wk_hash_count(WHash* hash);
/****************************************************/
/**
 * 遍历哈希表
 */
extern void wk_hash_iterate(WHash* hash,wk_element_iterate_do iterate_do,void* ctx);


#endif /* WK_HASH_H_ */
